#include <string.h>

//从有序顺序表删除所有重复元素
void delete_repeat(int arr[], int size)
{

    int left = 0, right = 1;
    int temp[size];
    //1.申请辅助内存
    memcpy(temp,arr,sizeof(int)*size);
    while(right < size)
    {
        if(arr[left] != arr[right])
        {
            arr[++left] = temp[right];
        }

        right++;

    }

}


//线性表l1 =（a1, a2, ...,an），l2 = (b1, b2, b3, ..., bn)；l1和l2合并为l = (b1,..., bn,a1, a2,..., an)
void swap(int left, int right)
{
    int temp = left;
    left = right;
    right = temp;
}

int reverse(int arr[],int from, int to)
{
    int left = from, right = to-1;
    while(left < right)
    {
        swap(arr[left], arr[right]);

    }
}


//数组元素循环左移
int left_move(int arr[], int size, int steps)
{
    reverse(arr, 0, size);
    reverse(arr, 0, size - steps);
    reverse(arr, size - steps, size);

}

//数组循环右移
int right_move(int arr[], int size, int steps)
{
    reverse(arr, 0, size);
    reverse(arr, 0, steps);
    reverse(arr, steps, size);

}

//已知有序线性表，l1,l2, l1 =（a1, a2, ...,an），l2 = (b1, b2, b3, ..., bn)；
//求l1, l2所有元素的中位数
/*
算法思想如下：
设A，B两个序列的中位数分别为 a b
	若 a == b，则 a 便为中位数
	若 a < b，则舍去 len = min(A,B)/2，舍去A较小的一半的len个，B较大的一半的len个
	若 a > b，则舍去 len = min(A,B)/2，舍去A较大的一半的len个，B较小的一半的len个
重复上述步骤，直至两个序列中都只含有一个元素为止
*/

int mid_search(int A[], int B[], int a, int b)
{
    int s1 = 0, d1 = a - 1, m1;
    int s2 = 0, d2 = b - 1, m2;


}
//已知线性表 l1 =（a1, a2, ...,an），元素有序，求众数
//已知线性表 l1 =（a1, a2, ...,an），元素无序，求众数

